// 节流:触发函数事件后，短时间间隔内无法连续调用，只有上一次函数执行后，过了规定的时间间隔，才能进行下一次的函数调用。

module.exports = (fn, wait, immediate) => {
    let timer, timeStamp = 0;
    let context, args;

    let run = () => {
        timer = setTimeout(() => {
            if (!immediate) {
                fn.apply(context, args);
            }
            clearTimeout(timer);
            timer = null;
        }, wait);
    }

    return function () {
        context = this;
        args = arguments;
        if (!timer) {
            console.log("throttle, set");
            if (immediate) {
                fn.apply(context, args);
            }
            run();
        } else {
            console.log("throttle, ignore");
        }
    }


}